package edu.gdpu.bytecode;

/**
 * @author mazebin
 * @date 2021年 07月08日 23:18:20
 * 成员变量的初始化是在构造方法中完成的，有多少个构造方法，初始化指令就会调用几次
 *  静态成员变量同样是在cinit方法或static{}完成的，编译器会收集代码中的静态变量和静态代码块不管有多少个静态变量都是在该方法完成初始化
 */
public class ByteCodeTest2 {
    String str="welcome";
    private int x=5;
    private static Integer in =10;

    public ByteCodeTest2(String str) {
        this.str = str;
    }

    public ByteCodeTest2(String str, int x) {
        this.str = str;
        this.x = x;
    }

    public ByteCodeTest2() {
    }

    public String getStr() {
        return str;
    }

    public void setStr(String str) {
        this.str = str;
    }

    public int getX() {
        return x;
    }

    public void setX(int x) {
        this.x = x;
    }

    public static Integer getIn() {
        return in;
    }

    public static void setIn(Integer in) {
        ByteCodeTest2.in = in;
    }

    public static void main(String[] args) {
        ByteCodeTest2 byteCodeTest2 = new ByteCodeTest2();
        byteCodeTest2.setX(10);
        in =10;
    }
    public void test(String str){
        synchronized (this){
            System.out.println("hello world");
        }

    }
    //给类字节码加锁
    public static synchronized  void test(){

    }
    static {
        System.out.println();
    }
}
